//
//  ViewController.swift
//  闭包-传递参数
//
//  Created by Summer on 2017/11/17.
//  Copyright © 2017年 Summer. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        
        loadData { (news) in
            print("获取的新闻为 \(news)")
        }
        
        
        
        // 尾随闭包
        // 如果函数的最后一个参数是闭包，函数参数可以提前结束，最后一个参数直接使用{}包装闭包的代码
        // loadData(completion: <#T##([String]) -> ()#>)
        loadData { (news) in
            
        }
    }


    
    func loadData(completion: @escaping (_ result: [String])->()) -> () {
        DispatchQueue.global().async {
            print("耗时操作--- \(Thread.current)")
            
            // 休眠1s
            Thread.sleep(forTimeInterval: 1.0)
            
            // 获得结果
            let json = ["娱乐","八卦","体育"]
            
            // 主线程回调
            DispatchQueue.main.async(execute: {
                print("主线程更新UI \(Thread.current)")
                
                
                // 回调，执行闭包
                // 传递异步获取的结果
                completion(json)
                
            })
        }
    }


}

